import {Config} from '../utils/Config.js';
import { Token } from '../utils/Token.js';
class Base {
  constructor() {
    this.baseRequestUrl = Config.restUrl;
  }

  //http 请求类, 当noRefech为true时，不做未授权重试机制
  request(params, noRefech){
    var that = this;
    var url = this.baseRequestUrl + params.url;

    if(!params.type){
      params.type = 'GET';
    }
    wx.request({
      url: url, 
      data:params.data,
      method:params.type,
      header: {
        'content-type': 'application/json', // 默认值
        'token': wx.getStorageSync('token'),
      },
      success: function (res) {
        // 判断以2（2xx)开头的状态码为正确
        // 异常不要返回到回调中，就在request中处理，记录日志并showToast一个统一的错误即可

        var code = res.statusCode.toString();
        var startChar = code.charAt(0);
       
        if (startChar == '2') {
          params.sCallback && params.sCallback(res.data);
        } else {
          if (code == '401') {
            if (!noRefech) {
              //再次请求
              that._refetch(params);
            }
          }
          that._processError(res);
          params.eCallback && params.eCallback(res.data);
        }
      },
      fail:function(res){
        params.fCallback && params.fCallback(res);
      }
    })
  }
  _processError(err) {
    console.log(err);
  }

  _refetch(param) {
    var token = new Token();
    token.getTokenFromServer((token) => {
      console.log(token);
      this.request(param, true);
    });
  }
  /*获得元素上的绑定的值*/
  getDataSet(event, key) {
    return event.currentTarget.dataset[key];
  };
}
export { Base };